草庐IT

Android Explicit Intent 抛出 NoClassDefFounderror

全部标签

c++ - 什么时候可以从 C++ 中的析构函数中抛出异常?

我知道规则是永远不要在析构函数中抛出一个,我明白为什么。我不敢这样做。但即使是C++FaqLite也说这条规则在99%的情况下都是好的。他们没有深入研究的另外1%是什么?LinktotheC++FaqLitebulletpointonthrowingfrom~(): 最佳答案 只是不要这样做。如果恒星和行星的排列方式让您发现您需要……还是别做了。 关于c++-什么时候可以从C++中的析构函数中抛出异常?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么抛出局部变量调用 moves 构造函数?

最近,我“玩”了右值以了解它们的行为。大多数结果并没有让我感到惊讶,但后来我看到如果我抛出一个局部变量,就会调用move构造函数。在那之前,我认为move语义规则的目的是保证对象只有在编译器可以检测到它不再被使用(如在临时对象中)时才会move(并变得无效),或者用户promise不使用它(如std::move)。但是,在下面的代码中,这些条件都不成立,我的变量仍在move(至少在g++4.7.3上)。这是为什么?#include#includeusingnamespacestd;intmain(){strings="blabla";try{throws;}catch(...){cou

c++ - 如何使用隐式虚拟析构函数正确解决不兼容的抛出说明符?

此代码无法编译:#include/*relevantpart:structQString{~QString()noexcept(false){};};*/classBase{public:virtual~Base()=default;};classDerived:publicBase{QStringstring_;};intmain(){return0;}错误是:error:looserthrowspecifierfor'virtualDerived::~Derived()'error:overriding'virtualBase::~Base()noexcept(true)'我没有使

c++ - double 到 string 到 double 的转换抛出异常

以下代码在VisualStudio2013中引发了std::out_of_range异常,我认为它不应该:#include#includeintmain(intargc,char**argv){doublemaxDbl=std::stod(std::to_string(std::numeric_limits::max()));return0;}我也用gcc4.9.2测试了代码,它没有抛出异常。该问题似乎是由转换为字符串后不准确的字符串表示引起的。在VisualStudio中std::to_string(std::numeric_limits::max())产量1797693134862

android - C++ 运算符 new 和 new[] 会在 Android 上抛出 std::bad_alloc 吗?

分配内存失败会抛出异常吗?我最近才知道Android支持异常。 最佳答案 我下载了ndk并在文档文件夹CPLUSPLUS-SUPPORT.HTML中找到了它。I.C++Exceptionssupport:TheNDKtoolchainsupportsC++exceptions,sinceNDKr5,howeverallC++sourcesarecompiledwith-fno-exceptionssupportbydefault,forcompatibilityreasonswithpreviousreleases.Toenable

c++ - 如果 Visual Studio 2012 抛出 VS2012 不应存在的编译错误,这意味着什么?

当我编译一些使用boost序列化的类时,出现编译错误C2996,请参阅下面的消息本身。如果我查找此错误,似乎此错误仅由更旧版本的编译器引发。怎么会这样?错误信息:E:\Lib\boost_1_54_0\boost/serialization/split_member.hpp(42):errorC2996:'boost::hash_combine':recursivefunctiontemplatedefinitionVS2013、VS2012以及VS2012Update4显示了此行为。 最佳答案 我遇到了类似的问题。在我看来,这就像

c# - 为什么 CLS 要求抛出/捕获异常派生对象?

CLS比CLR更具限制性,CLR允许您抛出和捕获任何类型的对象(甚至是值类型)。为什么?此外,如果某些不符合CLS的代码在被符合CLS的代码调用时抛出非异常派生对象,会发生什么情况?更新@Marton回答的第二个问题。仍然想知道为什么。 最佳答案 CLS指定了许多应用程序所需的最少语言功能集,如果API仅使用这些功能,则任何符合CLS的语言都可以使用它。所以它自然比CLR更受限制。另一方面,CLR旨在处理来自任何符合CLI的语言的托管代码。允许抛出不符合CLS的异常(那些不是从System.Exception派生的)的语言示例是C+

c++ - 面对抛出移动构造函数/赋值运算符,std::vector::emplace() 是否真的提供了强大的异常保证?

Accordingtocppreference.com,std::vector::emplace()无条件提供强异常保证:Ifanexceptionisthrown(e.g.bytheconstructor),thecontainerisleftunmodified,asifthisfunctionwasnevercalled(strongexceptionguarantee).但是,在GCC7.1.1的实践中似乎并非如此。以下程序:#include#includestructugly{inti;ugly(inti):i{i}{}ugly(constugly&other)=defaul

c++ - std::promise<void> 抛出未知错误,除非调用 sleep

我有这个代码:#include#includeintmain(){std::promisep;p.set_value();p.get_future().get();return0;}用gcc编译后抛出std::system_error:$g++-ofoofoo.cpp-std=c++11-lpthread$./footerminatecalledafterthrowinganinstanceof'std::system_error'what():Unknownerror-1奇怪的是,在创建promise之前添加零秒sleep,防止了异常:intmain(){std::this_thre

c++ - 在构造函数中抛出异常是否不安全?

我知道从析构函数中抛出异常是不安全的,但是从构造函数中抛出异常是否不安全?例如全局声明的对象会发生什么?使用gcc进行快速测试,我得到中止,总是有保证吗?您会使用什么解决方案来应对这种情况?在任何情况下,构造函数都可以抛出异常而不按照我们的预期进行。编辑:我想我应该补充一点,我试图了解在什么情况下我可能会发生资源泄漏。看起来明智的做法是在抛出异常之前手动释放我们在构造过程中获得的资源。在今天之前,我从来不需要在构造函数中抛出异常,所以试图了解是否存在任何陷阱。即这也安全吗?classP{public:P(){//dostuff...if(error)throwexception}}do